专利摘要:
1つの実施形態では、複数の実行装置を有するインターリーブ型マルチスレッド(IMT)プロセッサ内の実行パイプラインにおいて、実行装置でのライトバック段階の間、第1命令の実行によりレジスタファイルに書き込まれる結果に関連づけられた書き込み識別子を、第2命令に関連づけられた読み取り識別子と比較することを含む方法が開示される。書き込み識別子が読み取り識別子と合致したとき、本方法はさらに、後続の読み取り段階での実行装置による使用に備えて、結果を実行装置のローカルメモリに保存することを含む。
公开号:JP2011513843A
申请号:JP2010548779
申请日:2009-02-03
公开日:2011-04-28
发明作者:コドレスキュ、ルシアン;ベンクマハンティ、スレシュ・ケー.;ワン、リン
申请人:クゥアルコム・インコーポレイテッドQualcomm Incorporated;
IPC主号:G06F9-38
专利说明:

[0001] 本開示は一般に、実行装置内のデータ転送のシステムおよび方法に関する。]
背景技術

[0002] 通常のプロセッサでは、命令の実行は複数の段階を必要とすることがある。プログラムシーケンス内で、データ依存命令は通常分割され、ステージの各々を通して第1命令が処理される時間、および第1命令からの結果を使用する第2命令を実行する前にレジスタに当該結果が書き込まれる時間を可能ならしめる。この事例において、複数のデータ非依存命令を使用して、命令シーケンス内のデータ依存命令を分割し、後続命令の実行で結果が必要となる前に当該結果を作成し保存する時間を可能ならしめる。データ非依存命令を使用してデータ依存命令を分割することによって、プロセッサパイプラインをフル稼働またはそれに近い状態にすることができ、パイプラインのストールを減らすことができる。]
[0003] 現代のコンパイラは、シーケンス外の命令の実行により実行パイプライン装置のストールを減らそうとしている。特に、データ非依存命令および/または実行の準備ができている命令は、まだ準備ができていない命令(すなわち、別の実行中の命令によってデータがまだ決定されていないデータ依存の命令)の前に置かれる。典型的には、コンパイラアプリケーションを使用して当該データ依存命令を認識することができ、コンパイラアプリケーションは、プログラムシーケンス内の対応するデータ生成命令からのデータ依存命令の間隔をあけることによって、プログラムシーケンス内の命令を編成し、パイプラインのストールを減らすことができる。]
概要

[0004] 特定の実施形態では、複数の実行装置を有するインターリーブ型マルチスレッド(IMT)プロセッサ内の実行パイプラインにおいて、実行装置におけるライトバック(write back)段階の間、第1命令の実行によりレジスタファイルに書き込まれる結果に関連づけられた書き込み識別子を、第2命令に関連づけられた読み取り識別子と比較することを含む方法が開示される。書き込み識別子が読み取り識別子と合致したとき、本方法はさらに、後続の読み取り段階での実行装置による使用に備えて、結果を実行装置のローカルメモリに保存することを含む。]
[0005] 別の特定の実施形態では、第1命令パケットに関連づけられた第1アドレスにより、第2命令パケットに関連づけられた第2アドレスを特定することを含む方法が開示される。多方向キャッシュに関連づけられたキャッシュラインの境界を第2アドレスが越えたか否かを決定するために、データ装置の加算器のキャリービットが調べられる。境界が越えられていないとき、多方向キャッシュはアクセスされ、先行のタグ配列探索オペレーションにより特定された第1アドレスに関連づけられたタグ配列データおよび変換索引バッファ(TLB)探索データを使用して第2アドレスからデータが取り出される。]
[0006] さらに別の特定の実施形態では、1つあるいはそれより多くのデータ値を保存するローカルメモリを有する実行装置を含むマルチスレッドプロセッサが開示される。実行装置はさらに、読み取りオペレーションに関連づけられた読み取りアドレスが先行のライトバックオペレーションに関連づけられたライトバックアドレスと合致するか否かを決定するように適合された論理回路を含む。この論理回路は、読み取りアドレスがライトバックアドレスと合致したときにローカルメモリに1つあるいはそれより多くのデータ値を保存するように適合されている。]
[0007] さらに別の特定の実施形態では、複数の実行装置を有するインターリーブ型マルチスレッド(IMT)プロセッサ内の実行パイプラインにおいて、第1命令パケットの実行によりレジスタファイルに書き込まれる結果に関連づけられた書き込み識別子を、第2命令パケットに関連づけられた読み取り識別子と比較するための手段を含むプロセッサが開示される。このプロセッサはさらに、書き込み識別子が読み取り識別子と合致するときに第2命令パケットを実行する際の使用に備えて結果を実行装置に選択的にローカル保存するための手段を含む。]
[0008] データ転送論理およびローカルメモリを有するプロセッサの実施形態によって提供される1つの特有の利点は、第1命令の実行からの結果をローカル保存し、レジスタファイル読み取りオペレーションを実行することなく第2命令を実行する際に使用することができる点にある。レジスタファイル読み取りオペレーションを選択的に省略することにより、レジスタファイルのパワー消費を減らすことができる。]
[0009] 別の特有の利点は、第2命令の第2アドレスが第1命令の第1アドレスと同じキャッシュラインに関連づけられたときにタグ配列探索オペレーションを選択的に省略できる点にある。この例では、第2アドレスのタグ配列探索オペレーションを省略することができ、第1アドレスに関連づけられた先行の探索オペレーションによって特定されたタグ配列情報を再利用することができる。タグ配列探索オペレーションを選択的に省略することにより、全体のパワー消費を減らすことができる。]
[0010] さらに別の特有の利点は、同じ論理回路を使用して、データを選択的に転送すること、ならびにタグ配列探索オペレーションおよびTLB探索オペレーションを選択的に省略することができる点にある。追加的に、アセンブラまたはコンパイラを使用して命令パケットを配列し、データの転送(すなわち、スロット内転送(intra-slot forwarding))、タグ配列情報の再利用(すなわち、タグ配列探索オペレーションの省略)およびTLB探索オペレーションの選択的な省略の機会をもたらすことができる。こうしたデータの転送ならびにタグ探索オペレーションおよび/またはTLB探索オペレーションの選択的省略により、読み取りオペレーションの回数全体を減らすことができ、パワー消費を減らすことができる。]
[0011] 本開示の他の態様、利点および特徴は、以下の図面の簡単な説明、詳細な説明および特許請求の範囲のセクションを含む出願内容の全体を見た後に明らかとなろう。]
図面の簡単な説明

[0012] 図1は、データを転送するように適合された実行装置を含むシステムの特定の例解的実施形態を示すブロック図である。
図2は、データを転送するように適合された実行装置の特定の例解的実施形態を示すブロック図である。
図3は、データ転送論理回路およびタグ配列探索/変換索引バッファ(TLB)探索省略論理回路を有する共用制御装置を含むシステムの特定の実施形態を示すブロック図である。
図4は、データを選択的に転送し、タグ配列探索オペレーションおよび変換索引バッファ(TLB)オペレーションを選択的に省略するように適合されたプログラム可能論理回路(PLC)を含むプロセッサの特定の実施形態を示すブロック図である。
図5は、データを転送するように適合された実行パイプライン内のプロセスの例解的実施形態を示すタイミング図である。
図6は、実行パイプライン内の転送論理回路の特定の例解的実施例を示す図である。
図7は、タグ配列探索オペレーションを省略するように適合された実行パイプライン内のプロセスの例解的実施形態を示すタイミング図である。
図8は、データを選択的に転送し、タグ配列探索オペレーションまたは変換索引バッファ(TLB)探索オペレーションを選択的に省略するように適合されたシステム特定の例解的実施形態を示すブロック図である。
図9は、実行装置内のデータを転送する方法の特定の例解的実施形態を示す流れ図である。
図10は、タグ配列探索オペレーションを選択的に省略する方法の特定の例解的実施形態を示す流れ図である。
図11は、タグ配列探索オペレーションおよび/または変換索引バッファ(TLB)探索オペレーションを選択的に省略する方法の特定の例解的実施形態を示す流れ図である。
図12は、転送論理回路および探索省略論理回路を有する実行装置を含む通信デバイスの特定の例解的実施形態を示すブロック図である。]
詳細な説明

[0013] 図1は、転送論理回路およびローカルメモリを有する少なくとも1つの実行装置を含む処理システム100の特定の例解的実施形態を示すブロック図である。処理システム100は、バスインターフェース104を介して命令キャッシュ106およびデータキャッシュ112と通信するように適合されたメモリ102を含む。命令キャッシュ106はバス110によってシーケンサ114と結合されている。加えて、シーケンサ114は、割込みレジスタから受信することのある、汎用割込み116などの割込みを受信するように適合されている。シーケンサ114はまた、監視制御レジスタ132およびグローバル制御レジスタ134と結合されている。] 図1
[0014] 特定の実施形態では、命令キャッシュ106は、複数の現在の命令レジスタを介してシーケンサ114に結合されており、当該レジスタはバス110に結合され、処理システム100の特定のスレッドに関連づけられ得る。特定の実施形態では、処理システム100は6つのスレッドを含むインターリーブ型マルチスレッドプロセッサである。]
[0015] シーケンサ114は第1命令実行装置118、第2命令実行装置120、第3命令実行装置122および第4命令実行装置124に結合されている。各命令実行装置118、120、122および124は第2バス128を介して汎用レジスタファイル126に結合されることができる。汎用レジスタファイル126はまた、第3バス130を介してシーケンサ114、データキャッシュ112およびメモリ102に結合されることができる。監視制御レジスタ132およびグローバル制御レジスタ134は、シーケンサ114内の制御論理によってアクセスされ得るビットを保存して、割込みを受け入れるか否かを決定し、命令の実行を制御することができる。]
[0016] 第1実行装置118は転送論理回路136およびローカルメモリ138を含む。第2実行装置120は転送論理回路140およびローカルメモリ142を含む。第3実行装置122は転送論理回路144およびローカルメモリ146を含む。第4実行装置124は転送論理回路148およびローカルメモリ150を含む。実行装置118、120、122および124の各々は転送論理(すなわち、それぞれ転送論理136、140、144、148)を含むことが示されているが、特定の実施形態では、転送論理136のような転送論理は、実行装置120、122および124などのような他の実行装置と共有できることを理解すべきである。例えば、特定の実施形態では、実行装置118は転送論理136およびローカルメモリ138を含むことができ、他の実行装置120、122および124はローカルメモリ142、146および150を含むことができ、転送論理136を共有することができる。特定の実施形態では、実行装置118、120、122および124の1つあるいはそれより多くはローカルメモリを共有することができる。例えば、実行装置118および120はローカルメモリ138を共有することができ、実行装置122および124はローカルメモリ146を共有することができる。別の特定の実施形態では、転送論理136は実行装置118の外部に存在することがあり、実行装置118、120、122および124と通信することができ、これについては図4の制御装置406ならびに実行装置408、410、412および414に関して例解されたとおりである。] 図4
[0017] 特定の実施形態では、処理システム100は、実行装置118、120、122および124によって実行可能な第1命令パケットを受信し、第1命令パケットからの結果に依存する第2命令パケットを受信するように適合されている。第1命令パケットは4つの命令を含むことができ、当該命令は実行装置118、120、122および124に提供され得る。実行装置118、120、122および124は、デコード段階、レジスタファイルアクセス段階、多重実行段階およびライトバック段階を含む複数の段階を介して、第1命令パケットからの命令を処理することができる。ライトバック段階では、実行装置118の転送論理136は、第2命令パケットの読み取りアドレスが第1命令パケットのライトバックアドレスと合致すると決定することがあり、データを汎用レジスタファイル126にライトバックしてメモリ138にローカル保存することがある。代替的な実施形態では、実行装置118は各受信済み命令パケットの命令の少なくとも一部をデコードして、各命令の読み取りアドレスおよびライトバックアドレスを特定することができる。転送論理回路136は、第2パケットの読み取りアドレスを第1命令パケットのライトバックアドレスと比較し、他の実行装置(命令実行装置120、122および124など)にデータ転送制御信号を送信してデータをローカルに(すなわち、それぞれのローカルメモリ142、146および150に)保存するように適合することができる。データは、メモリ138、142、146および150から取り出して、第2(後続)命令パケットからの命令を実行する際に使用することができる。]
[0018] 特定の例では、転送論理回路136は、第2命令パケットの命令が第1命令パケットからの結果を使用することを発見することができる。特に、第1命令は、第2命令がデータを読み取るのと同じ場所にデータを書き込む。この例では、転送論理回路136は、第1命令パケット内の命令の結果が第2命令パケット内の命令によって利用されることを突き止めるように適合されている。例解のための非限定的な例を挙げると、転送論理回路136は、命令キャッシュ106もしくはシーケンサ114を介して将来の命令にアクセスできる制御論理回路(図示せず)から信号を受信することができ、または、転送論理回路136は、アセンブラ、コンパイラ、シーケンサ114もしくは他の回路によって設定できる第1パケット内の指定ビットのような転送標識を検出することができ、または、転送論理回路136は、命令のタイプに応じて少なくとも部分的に命令の結果の使用を予測することができる。別の実施例では、転送論理回路136は、すべての命令結果を後続命令による使用に備えてローカル保存する第1モード、または命令結果を一切保存しない第2モードで作動するよう構成できる。転送論理回路136は、バス128を介して汎用登録ファイル126に実行結果を書き込むことに加え、当該結果をローカルメモリ138に保存するように実行装置118にさせる。第2命令パケットからのデータ依存命令が実行装置118に提供されるとき、転送論理回路136は、レジスタ読み取りオペレーションの省略、ローカルメモリ138に保存された結果へのアクセス、および第2命令パケットからの命令を実行する際の結果の利用を、実行装置118にさせる。そのため、実行装置118は、転送論理回路136を利用することで、汎用レジスタファイル126に対する読み取りオペレーションの回数を減らす。]
[0019] データ依存命令がプログラムシーケンス内の隣接パケットで順序付けられるよう、命令パケットをコンパイルすることによって、コンパイル済みアプリケーションは、実行装置118、120、122および124の転送論理回路136、140、144および148を活用してパワー節約度を高めることができる。以前の命令によって生成されたデータは、バッファ、ラッチ、フリップフロップ、ローカルレジスタまたは他のメモリ要素など、ローカルメモリ138、142、146または150に保存することで、隣接パケットのためにレジスタ読み取りを実行することなく隣接パケットによって使用できるようになる。隣接していないパケット間でデータを転送できる例解的な実施形態では、ローカルメモリ138、142、146または150は、1つあるいはそれより多くの介在する(intervening)パケットが処理される間にデータを一時的にローカル保存するための1つあるいはそれより多くのレジスタを含むことができる。特に、隣接命令パケットのデータ依存命令を順序付けることにより、コンパイラはデータ転送の潜在能力を高め、それにより、読み取りオペレーションの省略の数を増やし、全体的なパワー消費を減らす。]
[0020] 特定の例では、実行装置118は、1つの命令パケットからのオペランド(および/またはデータ)を次の命令パケットへ転送するための転送論理回路136を含む。かかるデータ転送は、レジスタファイル読み取りオペレーションの回数全体を減らし、レジスタファイルのパワー消費全体を減らす。データ依存の命令パケット対の例が下の表1に提供される。]
[0021] この例では、実行される特定の命令は本開示とは関係ないが、例外は、第1命令パケットに関連づけられたVALIGNB命令の実行中に実行装置によって作成されたレジスタ対R7:6に保存された値が、第2パケットに関連づけられたVDMPY命令の実行中に実行装置によって使用されることである。特定の例では、実行装置118など同じ実行スロットでVALIGNBおよび後続のVDMPYの両方が実行されるように、アセンブラまたはコンパイラは命令を配列することができる。追加的に、アセンブラまたはコンパイラはプログラムシーケンス内で第1命令パケットのすぐ次に第2命令パケットを配列することができる。]
[0022] 図2は、転送論理回路220およびメモリ222を有する実行装置202を含むシステム200の一部のブロック図である。システム200は記憶デバイス204を含み、記憶デバイス204は、実行装置202の外部にあり、複数の記憶場所208、210、212、214、216および218を有する。記憶場所208、210、212、214、216および218の各々は、バス206を介して実行装置202にアクセス可能な記憶アドレスに関連づけられ得る。一般に、記憶場所208、210、212、214、216および218は、異なる長さのバス追跡(bus trace)によって実行装置202から分離されている。追加的に、実行装置202がメモリ204内の特定の記憶場所にアクセスするごとに、パワーが消費される。一般に、実行装置202は、命令を受信し、命令をデコードし、メモリ204のレジスタファイルへアクセスしてデータを取り出し、取り出されたデータを使用して命令を実行し、メモリ204へデータをライトバックするように適合されている。] 図2
[0023] 実行装置202は、転送論理回路220およびローカルメモリ222を含む。転送論理回路220は、特定の命令の実行によって生成されるデータが、プログラムシーケンスで次の命令を実行する中で使用される場合を検出するように適合されている。この場合、実行装置202は、転送論理220を利用してローカルメモリ222に第1命令の実行からの結果を保存するように適合されている。実行装置202は、次の命令の実行中にレジスタファイル読み取りオペレーションまたはメモリ読み取りオペレーションを省略し、ローカルメモリ222に保存されたデータを利用することができ、それによりメモリ読み取りオペレーションを回避しパワーを節約することができる。一般に、すべてのメモリアクセスを減らすことにより、パワーを消耗するメモリ読み取りオペレーションを選択的に回避して、パワー消費を節約することができる。]
[0024] 図3は、データ転送論理回路306および探索省略論理回路308を有する共用制御装置304を含むシステム300のブロック図である。システム300は、共用制御装置304に結合された命令キャッシュ302を含む。共用制御装置304はサービス装置314、記憶装置316およびデータ装置318に結合されている。共用制御装置304はまた、ソースレジスタファイル(source register file)312に結合されており、ソースレジスタファイル312は命令装置310と通信する。また、命令装置310およびデータ装置318は、バス装置322を介して通信し、バス装置322は、多方向キャッシュメモリなどのメモリ324に結合されている。サービス装置314、記憶装置316およびデータ装置318は目的レジスタファイル(destination register file)320に結合されている。] 図3
[0025] 特定の例解的実施形態では、システム300は命令パケットを受信し、当該命令をデータ装置318が実行して結果を生成することができる。共用制御装置304は、データ転送論理回路306を利用して当該結果が後続命令パケットによって使用されるか否かを決定するように適合されている。共用制御装置304は、サービス装置314、記憶装置316およびデータ装置318と通信して後続のレジスタファイル読み取りオペレーションを省略するように適合されている。追加的に、共用制御装置304は、データ装置314と通信して、図2に示すメモリ222または図1に例解するローカルメモリ138、142、146および150などのローカルメモリに結果を保存するようデータ装置314に命令するように適合されている。共用制御装置304はまた、サービス装置314、記憶装置316およびデータ装置318を制御して、ローカル保存されたデータを後続命令パケットの実行中に利用するように適合されている。特定の実施形態では、サービス装置314、記憶装置316およびデータ装置318は共同して、図1に示された実行装置118、120、122および124によって実行されるオペレーションに似た処理オペレーションを実行する。] 図1 図2
[0026] 別の特定の実施形態では、共用制御装置304は、探索省略論理回路308を利用して、第1命令に関連づけられた第1記憶アドレスがメモリ内において第2命令に関連づけられた第2記憶アドレスと同じキャッシュライン内にあるときなどにタグ配列探索オペレーションを省略すべきか否かを決定するように適合されている。特定の例では、システム300は、データ装置318が第1記憶アドレスを特定でき、第1記憶アドレスに基づいて第2記憶アドレスを計算できる場合に「自動インクリメントアドレス」モードで稼働することができる。例えば、データ装置318は、第1記憶アドレス(A)を特定して第2記憶アドレス(A+8)を計算することができる。この特定の例では、データ装置318は、第1命令パケットに関連づけられた少なくとも1つの命令を受信する。データ装置318は、当該命令に関連づけられた記憶アドレスを決定し第2記憶アドレスを計算するように適合されている。]
[0027] 特定の例では、記憶アドレスは、n方向キャッシュメモリ内の物理記憶アドレスに関係する仮想記憶アドレスであってよい。この例では、データ装置318は、変換索引バッファ(TLB)探索オペレーションを実行して物理記憶アドレスを特定することにより、仮想アドレスから物理アドレスへの変換を実行することができる。データ装置318は、タグ配列探索オペレーションを実行して、物理記憶アドレスに関係するデータ配列内の方向を特定するタグデータを特定することができる。データ装置318は、タグデータおよび物理記憶アドレス情報を使用して、n方向キャッシュメモリからデータを取り出すことができる。タグデータ(多方向キャッシュに関連づけられた方向を含む)を第2記憶アドレスと共にローカルメモリに保存することができる。第2記憶アドレスがデータ装置318によって使用されるため取り出されるとき、データ装置318は、第2記憶アドレスと第1記憶アドレスが同じキャッシュライン内にあるか否か決定することができる。第1記憶アドレスと第2記憶アドレスとがn方向キャッシュメモリ内の同じキャッシュラインに関連している場合、探索省略論理回路308は、データ装置318に対し、後続のタグ配列探索オペレーションを省略し、第1記憶アドレスからの方向を使用して第2記憶アドレスに関連づけられたn方向キャッシュメモリのデータにアクセスするよう命令するように適合されている。第1記憶アドレスおよび第2記憶アドレスがn方向キャッシュメモリ内の異なるキャッシュラインに関連づけられた場合に、探索省略論理回路308は、変換索引バッファ(TLB)探索オペレーションを実行することなくタグ配列探索オペレーションを実行するようデータ装置318に命令するように適合されている。第2記憶アドレスがページ境界を越えた(すなわち、ページサイズを上回った)とデータ装置318が決定した場合、探索省略論理回路308は、TLB探索オペレーションおよびタグ配列探索オペレーションを実行して第2記憶アドレスに関連づけられた物理アドレスおよびタグデータを特定するようデータ装置318に命令する。]
[0028] 特定の例では、n方向キャッシュメモリのページはキャッシュラインより大きいサイズを有する。例えば、キャッシュラインは32バイトを含むことがあり、ページは約4096ビット(約4キロビット)である場合がある。この場合、自動インクリメントアドレスが8バイト増えると、自動インクリメントアドレス計算が次のキャッシュラインに進む前にタグ配列データを3回再利用することができ(キャッシュラインはシーケンシャルオペレーションでアクセスされていると想定)、例えば第1TLB探索オペレーションからのページ変換を、別のTLB探索オペレーションの実行が必要となる前に多くの回数(すなわち約511回)再利用することができる。]
[0029] 特に、後続命令によってアクセスされた記憶アドレスが先行のメモリアクセスと同じキャッシュラインに関連づけられた場合、先行のタグ配列探索オペレーションで得られたタグ配列データを後続の記憶アドレスのために再利用することができ、それにより後続のタグ配列探索オペレーションを回避することができる。別の特定の例では、ページ境界を越えたときに限りTLB探索オペレーションを選択的に実行することにより、TLBがアクセスされる回数を減らして全体のパワー消費を減らすことができる。]
[0030] 図4は、プロセッサシステム400のブロック図である。プロセッサシステム400は、命令装置402および割込みレジスタ404を含み、これらは制御装置406に結合されている。制御装置406は複数の実行装置408、410、412および414に結合されている。実行装置408、410、412および414の各々はローカルメモリ426、428、430および432をそれぞれ含むことができる。] 図4
[0031] 制御装置406は、デコーダ416、制御レジスタファイル418、汎用レジスタファイル420、プログラム可能論理コントローラ(PLC)回路422およびシリコン内デバッガ(in-silicon debugger)(ISDB)回路424を含む。ISDB回路424は、プロセッサシステム400の実行中にソフトウェアをデバッグするために使用できるJTAG(joint test action group)に基づくハードウェアデバッガを提供する。特定の実施形態では、ISDB回路424はスレッドの個々のデバッグをサポートし、スレッド実行の停止を可能にするとともに、制御レジスタファイル418および汎用レジスタファイル420を含む、命令およびデータメモリの監視および変更を可能にする。]
[0032] 特定の例解的実施形態では、デコーダ416は命令を受信しデコードする。デコーダ416はデコード済み命令に関係するデータをPLC回路422に通信し、PLC回路422は、命令パケットのシーケンスで第2命令パケットによって利用される結果を第1命令パケットが生成する場合を検出する論理を含むことができる。連続した命令パケット間のこうしたデータ依存性の検出に伴い、PLC回路422は、それぞれのローカルメモリ426、428、430または432に結果を保存するためにデータ生成命令を実行している実行装置408、410、412および414の少なくとも1つに対する制御信号を生成するように適合されている。PLC422は、汎用レジスタファイル420およびデコーダ416を制御して、後続命令パケットからのデータ依存命令を選択済み実行装置(例:実行装置408)に経路指定し、それにより実行装置が後続命令の実行中にローカル保存済みデータを(すなわち、ローカルメモリ426に保存済みのデータ)を利用できるようにするように適合されている。この例では、PLC422はまた、結果がローカル保存されているときには、実行装置408およびバス434を制御して、実行装置408がメモリ(汎用レジスタファイル420など)にアクセスするのを防ぎ、当該結果を取り出すことができる。]
[0033] 特定の例では、実行装置408は制御装置406からデータ生成命令を受信し、命令を実行し、結果を汎用レジスタファイル420にライトバックすることができる。実行装置408はまた、制御装置406のPLC422から受信した制御信号に応じて、ローカルメモリ426に結果を保存することができる。実行装置408は、ローカルメモリ426からの保存済み結果を利用する制御装置406から次の命令を受信することができる。実行装置408は、ローカルメモリ426にアクセスして保存済み結果を取り出し、取り出した結果を使用して次の命令を実行することができる。この特定の例では、実行装置408は、汎用レジスタファイル420から結果をリードバックすることなく、次の命令を実行することができ、それによりレジスタファイル読み取りオペレーションを省略し、パワーを節約することができる。]
[0034] 別の特定の実施形態では、制御装置406は、タグ配列探索オペレーションにより特定されたタグ配列データを選択的に再利用するように適合されている。例えば、自動インクリメント機能を使用して第1アドレスから第2アドレスを計算するとき、PLC422は、キャリービットを調べて、第2アドレスが第1アドレスとは異なるキャッシュラインに関連するときを決定することができる。例えば、キャッシュラインが32バイト幅の場合、第2アドレスの第5ビットはキャリービットを表す。キャリービットが変わると、第2アドレスはキャッシュメモリ内の次のキャッシュラインに関連づけられる。一般に、PLC422は、第2アドレスが第1命令とは異なるキャッシュラインに関連づけられることをキャリービットが示すまで、先行のタグ配列探索オペレーションからのタグ配列データを再利用するよう実行装置408、410、412および414に命令する。この場合、PLC422は、実行装置408、410、412および414に、変換索引バッファ(TLB)探索オペレーションを実行することなく新たなタグ配列探索オペレーションを実行させる。]
[0035] さらに別の特定の実施形態では、制御装置406は、変換索引バッファ(TLB)探索オペレーションを選択的に実行するように適合されている。特に、PLC422は、第2記憶アドレスの計算からのキャリービットを調べて、ページ境界を越えていることを計算済み記憶アドレスが示すときを決定する。例えば、メモリ配列のページサイズが約4096ビット(すなわち4キロビット)である場合、第2記憶アドレスの第11ビットがキャリービットを表すことがある。したがって、第2記憶アドレスの第11ビットが変わると、ページ境界を越え、PLC422は実行装置408、410、412または414の1つに、TLB探索オペレーションを開始させ、続いてタグ配列探索オペレーションを行うことができる。この例では、タグ配列探索オペレーションはTLB探索オペレーションよりも高い頻度で発生する。PLC422は、タグ配列探索オペレーションおよびTLB探索オペレーションのうち1つまたは両方を選択的に省略して、全体のパワー消費を減らすように適合されている。]
[0036] 図5は、データ転送論理を含む実行装置の命令サイクル500の特定の例を示す図である。一般に、命令サイクル500は、特定のスレッドの観点から実行装置の複数の段階を表す。実行装置は一般に、ライトバック段階502、デコード段階504、レジスタ読み取り段階506、1つあるいはそれより多くの実行段階508、510および512ならびに第2ライトバック段階514を含む1つあるいはそれより多くの段階でデータおよび命令を処理する。命令サイクル500はただ1つのライトバック段階(ライトバック段階514)を含み、次いで実行サイクルがデコード段階504で始まり繰り返されることを理解すべきである。ライトバック段階502は説明目的で例解されている。] 図5
[0037] 一般に、ライトバック段階502では、516において、以前実行された命令からの結果が汎用レジスタファイルのようなレジスタにライトバックされる。518において、次の命令パケット(1〜4つの命令を含み得る)が受信され、受信済みパケットの読み取り識別子が、レジスタに書き込まれた書き込み結果に関連づけられた書き込み識別子と比較される。読み取り識別子と書き込み識別子とが合致したとき、(520において)書き込み結果は実行装置にローカル保存され、同様に516においてレジスタにライトバックされる。この場合、522において(506の)レジスタ読み取りを省略することができ、実行装置にローカル保存されたデータを使用することができる。524では、レジスタ読み取り段階(506)で読み取られたデータまたは実行装置にローカル保存されたデータの少なくとも1つを使用して命令が実行される。よって、(518で)読み取り識別子と書き込み識別子とが合致したとき、(506の)レジスタ読み取り段階を省略することができ、ローカル保存されたデータを利用することができ、その結果、データ転送が可能になる。]
[0038] 特定の例解的実施形態では、図5に例解された実行装置段階504、506、508、510、512および514は、インターリーブ型マルチスレッドプロセッサ内の実行装置のサイクルを表す。追加的に、ライトバック段階502は、先行命令の実行サイクルの最終段階を表す。ファイル読み取り段階506でレジスタファイル読み取りオペレーションを実行することなく、(522において)先行命令からのデータを実行装置のローカルメモリから取り出すことができ、524で(すなわち、1つあるいはそれより多くの実行段階508、510および512で)次の命令と共に処理することができる。特定の例解的実施形態では、段階504、516、508,510、512および514の各々は、特定のオペレーションが実行されるクロックサイクルを表すことがある。] 図5
[0039] 図6は、プロセッサの実行装置におけるデータ転送論理600の特定の例解的実施形態を示すブロック図である。この場合、ライトバック段階602、デコード段階604およびレジスタファイル読み取り段階606に関してデータ転送論理600が示されている。例解的実施形態では、データ転送論理600は、代表スロット2のような、複数のスロットのうちの単一処理スロットを表し、レジスタファイルの代表レジスタ「S」および「T」を使用して読み取りおよび書き込みオペレーションを行うことができる。] 図6
[0040] ライトバック段階602に関して、転送論理600は、比較器608および610、論理和ゲート611、インバータ614および616、論理積ゲート618および620ならびにレジスタファイル612を含む。転送論理600はまた、転送可能フリップフロップ回路636、転送データフリップフロップ回路638を含む。比較器608は次のパケットレジスタ「S」(Rs)読み取り識別子情報622および現在のパケット書き込み識別子情報624をインプットとして受信し、インバータ614のインプットに結合されたアウトプットを提供する。インバータ614のアウトプットは、論理積ゲート618の第1インプットに結合され、論理積ゲート618の第2インプットはスロット2レジスタ「S」読み取り可能(s2RsRdEn)インプット632に結合されている。論理積ゲート618はまた、レジスタファイル612のスロット2レジスタに結合されたアウトプットを含む。比較器610は、次のパケットレジスタ「T」(Rt)読み取り識別子情報626(次のパケット読み取り識別子情報622と同じであってよい)および現在のパケット書き取り識別子情報628を受信し、アウトプットを提供し、当該アウトプットは、インバータ616を介して論理積ゲート620のインプットに結合する。論理積ゲート620はまた、第2インプットでスロット2レジスタ「T」読み取り可能(s2RtRdEn)インプット634を受信し、レジスタファイル612のスロット2レジスタに結合されたアウトプットを提供する。比較器608および610のアウトプットはまた、転送可能フリップフロップ636へのインプットとして、また論理和ゲート611へのインプットとして提供され、論理和ゲート611は転送データフリップフロップ638にイネーブルインプットを提供する。転送データフリップフロップ638はまた、実行装置データライトバック630からデータを受信する。]
[0041] 転送論理600のデコード段階604では、転送可能フリップフロップ636のアウトプットが、第2転送可能フリップフロップ640へのインプットとして、また第2転送データフリップフロップ642へのイネーブルインプットとして提供される。転送データフリップフロップ638は、第2転送データフリップフロップ642へデータインプットを提供する。]
[0042] レジスタファイル読み取り段階606では、第2転送可能フリップフロップ640は、第1多重装置644の選択インプットに、また第2多重装置646の選択インプットに転送可能信号を提供する。第1多重装置644は、第1インプットで転送済みデータ、第2インプットでレジスタ(s)データを受信し、次の命令パケットを実行する際の使用に備えて転送済みデータまたはレジスタ(s)データのいずれかを含むアウトプット648を提供する。第2多重装置646は、第1インプットで転送済みデータ、第2インプットでレジスタ(t)データを受信し、次の命令パケットを実行する際の使用に備えて転送済みデータまたはレジスタ(t)データのいずれかを含むアウトプット650を提供する。]
[0043] 一般に、比較器608は、次のパケット読み取り識別子情報622および現在のパケット書き込み識別子情報624を受信するように適合されている。比較器610は、次のパケット読み取り識別子情報626および現在のパケット書き込み識別子情報628を受信するように適合されている。次のパケット読み取り識別子622および626のうち1つが現在のパケット書き込み識別子624および628のうち1つと合致した場合、かかる合致を特定した比較器(例:比較器608および610のうちの1つ)は、論理1値をアウトプットで提供し、転送データフリップフロップ638を有効にし、それぞれのインバータ614または616およびそれぞれの論理積ゲート618または620を介した対応するレジスタ読み取り可能状態を無効にする。]
[0044] 特定の例解的実施形態では、次のパケット読み取り識別子622が現在のパケット書き込み識別子情報624と合致したとき、比較器608は転送データフリップフロップ638へのインプットとして論理highアウトプットを提供する。インバータ614は論理highアウトプット(logic high output)を反転させ、論理積ゲート618へのインプットとして論理low値を提供し、レジスタファイル612へのスロット2レジスタ(s)読み取り可能状態を無効にする。転送データフリップフロップ638はライトバックインプット630を介して実行装置からデータを受信し、データを保存する。デコード段階604では、データは第2転送データフリップフロップ642に転送される。転送されたデータは、第1多重装置644および第2多重装置646に提供され、第2転送可能フリップフロップ640からのアウトプットに基づき第1アウトプット648および第2アウトプット650のうち1つに選択的に提供される。第2転送可能フリップフロップ640は、比較器608のアウトプットを第1多重装置644に提供し、比較器610のアウトプットを第2多重装置646に提供して、第2転送データフリップフロップ642からの転送済みデータまたはレジスタデータのうちの1つを選択する。]
[0045] 転送論理600は、読み取り/書き込み識別子の合致に基づきレジスタ読み取りオペレーションを選択的に可能にするように適合されている。また、転送論理600を使用して、後続命令での再利用に備えて記憶アドレスに関連づけられたタグ配列データ(方向情報など)を選択的にキャッシュすることができる。特定の例では、転送論理600または同様の論理は、計算済みアドレスに関連づけられたキャリービットを調べて、計算済みアドレスが次のキャッシュラインに関連づけられた(すなわち、タグ配列探索オペレーションにつながり、変換索引バッファ(TLB)探索オペレーションを省略する)ときを決定するように適合することができる。別の特定の例では、転送論理または同様の論理は、計算済みアドレスに関連づけられたキャリービットを調べて、計算済みアドレスがページ境界を越える場合(すなわち、変換索引バッファ(TLB)探索オペレーションおよびタグ配列探索オペレーションにつながる場合)を特定するように適合することができる。タグ配列データが依然として有効である(すなわち、第1および第2記憶アドレスのキャッシュラインが同じである)と転送論理600または同様の論理が決定した場合、タグ配列データを、TLB探索オペレーションおよび/またはタグ配列探索オペレーションを実行することなく第2記憶場所にアクセスする際の使用に備えて、転送データフリップフロップ638および642などのデータラッチでラッチすることができる。]
[0046] 図7は、データ転送論理を含み、探索オペレーションを選択的に省略するように適合された実行装置の命令サイクル700の特定の例を示す図である。命令サイクル700は一般に、ライトバック段階702、デコード段階704、レジスタ読み取り段階706、1つあるいはそれより多くの実行段階708、710および712ならびに第2ライトバック段階714を含む複数の段階を含む。命令サイクル700はただ1つのライトバック段階(ライトバック段階714)を含み、次いで実行サイクルがデコード段階704で始まり繰り返されることを理解すべきである。ライトバック段階702は説明目的で例解されている。] 図7
[0047] 一般に、先行命令の実行の実行段階(実行段階708など)では、第1記憶アドレスおよび第2記憶アドレスを計算することができ、第2記憶アドレスをローカルメモリ(図1に例解されるローカルメモリ138など)に保存することができる。ライトバック段階702の間、716において、以前実行された命令からの結果がキャッシュアドレスまたは汎用レジスタファイルのようなレジスタにライトバックされる。718ではローカルメモリから第2記憶アドレスを取り出すことができる。720では、第2記憶アドレスに関連づけられた1つあるいはそれより多くのキャリービットの値が、1つあるいはそれより多くのキャリービットが自動インクリメントオペレーションによるキャリー値を示すか否かを決定するために調べられる。1つあるいはそれより多くのキャリービットの第1キャリービットの値が、第2記憶アドレスが第1記憶アドレスとは異なるキャッシュラインに関連づけられていることを示さなかった場合、722において変換索引バッファ(TLB)探索オペレーションおよびタグ配列探索オペレーションは省略され、先行のタグ配列値が使用されてメモリからデータが取り出される。1つあるいはそれより多くのキャリービットの第1キャリービットの値がキャリー値を示し、1つあるいはそれより多くのキャリービットの第2キャリービットがキャリー値を示さなかった場合、例えば、第2記憶アドレスが先行記憶アドレスと同じページ内の異なるキャッシュラインに関連づけられているとき、724において、TLB探索オペレーションは省略されるが、タグ配列探索オペレーションは実行され、メモリからデータを取り出すためにタグ配列値を取り出す。1つあるいはそれより多くのキャリービットの各々がキャリー値を示す場合、726に示すようにTLB探索オペレーションおよびタグ配列探索オペレーションが実行される。] 図1
[0048] 特定の例では、タグ配列探索オペレーションを省略することができ、先行のタグ配列探索オペレーションにより決定されたタグ配列データを使用してメモリ内のアドレスにアクセスすることができる。特に、タグ配列データを使用することで、タグ配列データを探索することなく、またTLB探索オペレーションを実行することなく記憶アドレスにアクセスすることができる。]
[0049] 特定の例解的実施形態では、図7に例解する段階704、706、708、710、712および714は、インターリーブ型マルチスレッドプロセッサ内の実行装置の段階を表すことがある。追加的に、特定の実施形態では、段階704、706、708、710、712および714は、クロックサイクルを表すことがある。] 図7
[0050] 図8は、実行装置808および810内でそれぞれローカルメモリ809および811を使用してデータを選択的に転送するための制御装置806を有する回路デバイス802を含むシステム800の特定の例解的実施形態を示すブロック図である。また、制御装置806は、タグ配列826または変換索引バッファ(TLB)装置862に関係する探索オペレーションを選択的に省略するように適合されている。特定の例では、制御装置806は、計算されたアドレスが以前計算されたアドレスと同じキャッシュライン内または同じページ内にあるときに先行の探索オペレーションからのタグ配列情報および/または変換索引バッファ(TLB)情報を転送することによって、タグ配列826における探索オペレーション、TLB装置862における探索オペレーション、またはその組合せを省略することができる。] 図8
[0051] 一般に、回路デバイス802はデータ装置804を含み、データ装置804は制御装置806、バス装置812および結合変換索引バッファ(joint translation look-aside buffer)(TLB)装置813と通信する。バス装置812はレベル2密結合メモリ(TCM)/キャッシュメモリ858と通信する。また、制御装置806は、第1実行装置808、第2実行装置810、命令装置814およびシリコン内デバッガ(ISDB)装置818と通信する。命令装置814は、結合TLB装置813およびISDB装置818と通信する。また、回路デバイス802は、埋め込み追跡装置(embedded trace unit)(EU)820およびメモリビルトインセルフテスト(BIST)またはテスト容易化設計(DFT)装置822を含む。ISDB装置818、EU820およびメモリBIST装置822は、回路デバイス802で作動するソフトウェアのテストおよびデバッグを行うための手段を提供する。]
[0052] 制御装置806は、レジスタファイル836および838、制御論理回路840、割込み制御回路842、制御レジスタ844および命令デコーダ848を含む。一般に、制御装置806は、スレッドをスケジュールし、命令装置(IU)814に命令を要求し、命令をデコードして3つの実行装置、すなわちデータ装置804(実行スロット1および0、それぞれ830および832)、実行装置808および実行装置810に発行する。命令装置814は、命令変換索引バッファ(ITLB)864、命令アドレス生成装置866、命令制御レジスタ868、命令パケット整列回路870および命令キャッシュ872を含む。命令装置(IU)814は、主メモリまたは命令キャッシュ872から命令を取り出し、取り出された命令を制御装置806に提供する役割を担うプロセッサパイプラインのフロントエンドであり得る。]
[0053] データ装置804は、キャッシュ可能データを包含するデータ配列824を含む。特定の実施形態では、データ配列824は、16のサブ配列メモリバンクに配列された、各バンクが16組の16方向を含む多方向データ配列であってよい。サブ配列内の各記憶場所は、倍長語または8バイトのデータを保存するように適合することができる。特定の例では、サブ配列は256の倍長語(すなわち16×16の倍長語)を含むことができる。データ装置804はまた、データ配列824に関連づけられた物理タグを保存するタグ配列826を含む。特定の実施形態では、タグ配列826は静的ランダムアクセスメモリ(SRAM)である。データ装置804はまた、キャッシュラインに関連づけられた状態を保存するように適合された状態配列828を含む。特定の例では、状態配列828は、キャッシュミス事象に応じた置き換えのためのキャッシュ方向を供給する。データ装置804はまた、実行装置(スロット1)830および実行装置(スロット0)832を含み、これらは一般にロードオペレーションおよび保存オペレーションを実行する。データ装置804は、データ装置804のオペレーションを制御する制御回路834を含む。]
[0054] 一般に、データ装置804は、制御装置806と通信して、実行装置830および832で実行する命令を受信する。データ装置804はまた、バスサービス要求のためにバス装置812と通信し、結合TLB主メモリ装置変換のために結合TLB装置813と通信する。]
[0055] バス装置812はバス待ち行列装置(bus queue unit)850、レベル2タグ配列854、非同期先入れ先出し(FIFO)装置852およびレベル2インターフェース856を含む。レベル2インターフェース856は、レベル2TCM/キャッシュ858と通信する。結合TLB装置813は、制御レジスタ860および64項目を含む結合TLBテーブル862を含む。]
[0056] 特定の例解的実施形態では、制御装置806は第1命令パケットおよび第2命令パケットを受信する。制御装置806は、第1命令パケットからの命令を実行のため実行装置808に提供することができる。実行装置808は、第1命令パケットからの第1命令を実行し、第1命令に関連づけられた第1アドレスを決定することができる。特定の例では、実行装置808は第1命令に基づき第1仮想アドレスを計算することができ、第1仮想アドレスに基づき(すなわち、自動インクリメント機能により)第2仮想アドレスを計算することができる。実行装置808は、制御装置808を介してデータ装置804と通信し、TLB装置813を介して変換索引バッファ(TLB)探索オペレーションを実行することができる。データ装置804はTLB装置813と通信することによってTLB探索オペレーションを制御することができ、タグ配列826を介してタグ配列探索オペレーションを実行し、データ配列824のような多方向メモリ内の方向を決定することもできる。TLBページ変換情報およびタグ配列データを制御装置806を介して実行装置808に提供することができる。制御装置806は実行装置808に対し、タグ配列情報および/またはTLBページ変換情報をメモリ809に保存するよう命令することができる。実行装置808はタグ配列情報に基づき記憶場所からデータを取り出すことができる。]
[0057] 特定の例では、第2仮想アドレスが第1仮想アドレスと同じキャッシュラインに関連づけられている場合、実行装置808は、メモリ809からの保存済みタグ配列情報を使用して、タグ配列探索オペレーションおよびTLBページ変換を実行することなくデータ配列824などの物理メモリに直接アクセスすることができる。特定の実施形態では、制御装置806の制御論理回路840は実行装置808に対し、保存済みタグ配列情報を使用するよう命令することができる。第2仮想アドレスが第1仮想アドレスと異なるキャッシュラインに関連づけられている場合、実行装置808は、制御装置806を介してデータ装置804と通信して、TLB探索オペレーションを実行することなく(すなわち、仮想ページから物理ページへの変換を実行することなく)、タグ配列探索オペレーションを実行して第2仮想アドレスに関係するタグ情報を決定することができる。]
[0058] 特定の例解的実施形態では、実行装置808および810は、図3に例解する探索省略論理回路308のような、タグ配列探索オペレーションおよび/またはTLB探索オペレーションを省略するときを決定するメモリ配列探索省略論理回路を含む。別の特定の例解的実施形態では、制御論理回路840は、実行装置808および810を制御して、タグ配列探索、TLB探索またはその組合せを選択的に省略することができる。また、実行装置808および810は、図1に示す転送論理回路136のようなデータ転送論理回路を含むことができる。特定の例解的実施形態では、制御論理回路840は、実行装置808および810を制御することによって第1命令からのデータを第2命令に選択的に転送し、後続命令を実行する際の使用に備えて当該データをそれぞれのメモリ809および811に保存するように適合されている。] 図1 図3
[0059] 図9は、データ転送の方法の特定の例解的実施形態を示すブロック図である。902では、複数の実行装置を有するインターリーブ型マルチスレッドプロセッサ内で、実行装置のライトバック段階の間、レジスタファイルに書き込まれるデータに関連づけられた書き込み識別子が、実行パイプラインの後続の読み取り段階の読み取り識別子と比較される。904に進み、書き込み識別子が読み取り識別子と合致しなかった場合、本方法は906に進み、第1命令パケットの実行から生じたデータが、レジスタファイルにある1つの場所に書き込まれ、当該データを実行装置にローカル保存しない。代替的に、904で書き込み識別子が読み取り識別子と合致した場合、本方法は908に進み、データはレジスタファイルに書き込まれ、後続の読み取り段階での実行装置による使用に備えて実行装置にローカル保存される。910に進み、本方法は、ローカル保存場所またはレジスタファイルの場所からデータを取り出すことを含む。912に進み、本方法は、取り出されたデータを使用して後続の読み取り段階を実行することを含む。特定の例では、本方法は、実行装置にローカル保存されたデータを使用して実行装置で命令パケットを実行することを含む。本方法は914で終了する。] 図9
[0060] 特定の例では、本方法は、データに含まれる1つあるいはそれより多くのゼロ値ビットを特定して、書き込み識別子が読み取り識別子と合致するか否かを決定することを含む。ゼロ値ビットに基づき、本方法は、1つあるいはそれより多くのゼロ値ビットに関連づけられた実行装置内のデータパスへのパワーを減らすための標識を生成することを含むことができる。別の特定の例では、本方法は、データ装置に関連づけられた多方向キャッシュのキャッシュラインアドレスを、書き込み識別子に関連づけられたキャッシュラインアドレスと比較すること、および、書き込み識別子に関連づけられたキャッシュラインアドレスがデータ装置に関連づけられたキャッシュラインアドレスと合致したときに、変換索引バッファ(TLB)タグを読み込むことなく多方向キャッシュからデータを取り出すことを含む。]
[0061] 図10は、タグ配列探索オペレーションを選択的に省略する方法の特定の例解的実施形態を示すブロック図である。1002では、自動インクリメント機能を使用して第1記憶アドレスから第2記憶アドレスが計算される。続いて1004では、第2記憶アドレスに関連づけられた第1キャリービットが調べられる。ある例解的実施形態では、第2アドレスが第1アドレスと同じキャッシュライン内にあるか否かを決定するため、キャリービットは、キャッシュラインのサイズに関連づけられたアドレスビットである。例えば、下位ビット0000、0001、...0111を有する連続アドレスは単一のキャッシュライン内にあるが、下位ビット1000を有する次の連続アドレスは異なるキャッシュラインにある場合、0から1に変化するビット(すなわち最下位から4番目のアドレスビット)が、1004で調べられるキャリービットである。続く例では、第2アドレスが第1アドレスの自動インクリメントによって生成されるとき、最下位から4番目のアドレスビットが値を変えると、キャリー値が示される。1006では、第1キャリービットがキャリー値を示す場合、本方法は1008に進み、タグ配列探索オペレーションを実行して第2記憶アドレスに関連づけられたタグ配列情報を取り出す。1010に進み、タグ配列情報がローカルメモリに保存される。1012に進み、タグ配列情報を使用してキャッシュメモリからデータが取り出される。] 図10
[0062] 1006に戻り、第1キャリービットがキャリー値を示していない場合、本方法は1014に進み、第1記憶アドレスに関連づけられた探索オペレーションのような先行のタグ配列探索オペレーションでタグ配列情報が特定されたローカルメモリからタグ配列情報が取り出される。本方法は1016で終了する。]
[0063] 図11は、タグ配列探索オペレーション、変換索引バッファ(TLB)探索オペレーションまたはその組合せを選択的に省略する(バイパスする)方法の特定の例解的実施形態を示す流れ図である。1102では、TLB探索オペレーションを実行して仮想記憶アドレスを物理記憶アドレスに変換する。続いて1104では、タグ配列探索オペレーションを実行して物理アドレスに関連づけられたタグ情報を決定する。1106に進み、タグ配列情報がローカルメモリに保存される。1108に進み、自動インクリメント機能を使用して第1記憶アドレスから計算される第2記憶アドレスが受信される。特定の例では、第1記憶アドレスをインクリメントすることにより第1記憶アドレスから第2記憶アドレスを計算することができる。続いて1110では、キャリー値(すなわちキャリービットの値)を特定するため、第2記憶アドレスに関連づけられたキャッシュラインキャリービットが調べられる。特定の例では、例えばキャリービットは32ビットのキャッシュに関係する第5アドレスビットであり得る。1112で、キャッシュラインキャリービットがキャリー値を示していない場合、本方法は1114に進み、ローカルメモリに保存されたタグ情報が取り出される。続いて1116では、取り出されたタグ情報に基づきメモリの第2記憶アドレスからデータが取り出される。1112に戻り、キャッシュラインキャリービットがキャリー値を示している場合、本方法は1118に進み、キャリー値を特定するためページ境界キャリービットが調べられる。1120では、ページ境界キャリービットがキャリー値を示している場合、本方法は1102に戻り、TLB探索オペレーションを実行して記憶アドレスを物理アドレスに変換する。1120に戻り、ページ境界ビットがキャリー値を示していない場合、本方法は1104に進み、タグ配列探索オペレーションを実行して物理アドレスに関連づけられたタグ情報を決定し、TLB探索オペレーションは実行しない。] 図11
[0064] 図12は、レジスタ読み取りオペレーションおよび/または変換索引バッファ(TLB)探索オペレーションを選択的に省略する論理回路を含むプロセッサを含む代表的なワイヤレス通信デバイス1200を示すブロック図である。ワイヤレス通信デバイス1200は、1つあるいはそれより多くの実行装置1268と通信するデータ転送/探索省略論理回路1264を含むデジタル信号プロセッサ(DSP)1210を含むことができる。1つあるいはそれより多くの実行装置1268の各々は、ローカルメモリ1270を含む。データ転送/探索省略論理回路1264は、実行装置1268を制御して、後続命令パケットによる使用に備えてデータをローカルメモリ1270にローカル保存することによってデータを転送するよう作動することができる。ワイヤレス通信デバイス1200はまた、DSP1210にアクセスできるメモリ1232を含む。データ転送/探索省略論理回路1264はまた、実行装置1268を制御して(異なる記憶アドレスに関連づけられた先行のタグ配列探索オペレーションからの)以前決定されたタグ配列情報を利用し、変換索引バッファ(TLB)探索オペレーションおよびタグ配列探索オペレーションの両方を省略するように適合されている。以前決定されたタグ配列情報を使用して、他のタグ配列探索オペレーションを実行することなくメモリ1232のようなメモリにアクセスすることができる。別の特定の実施形態では、図1〜11に関して説明したとおり、先行のTLB探索オペレーションにより決定された第1アドレスのページ変換情報を使用して、別のTLB探索オペレーションを実行することなく、タグ配列探索オペレーションを実行することができる。特定の実施形態では、データ転送および/またはTLB探索省略論理回路1264は、データ転送機能、タグ配列探索省略機能、TLB探索省略機能またはこれらの任意の組合せを提供することができる。] 図1 図10 図11 図12 図2 図3 図4 図5 図6 図7
[0065] 特定の実施形態では、ワイヤレス通信デバイス1200は、データ転送回路および探索省略論理回路の両方を含むことができる。別の特定の実施形態では、ワイヤレス通信デバイス1200はデータ転送回路のみ含むことができる。さらに別の特定の実施形態では、探索省略論理回路を含むことができる。さらに別の特定の実施形態では、データを転送すべきか否かを決定するように適合された論理回路を使用して、タグ配列探索オペレーション、TLB探索オペレーションまたはこれらの組合せを省略すべきか否かを決定することができる。]
[0066] 図12はまた、デジタル信号プロセッサ1210およびディスプレイ1228に結合したディスプレイコントローラ1226を示している。コーダ/デコーダ(CODEC)1234もデジタル信号プロセッサ1210に結合することができる。スピーカー1236およびマイクロフォン1238はCODEC1234に結合することができる。] 図12
[0067] 図12はまた、ワイヤレスコントローラ1240がデジタル信号プロセッサ1210およびワイヤレスアンテナ1242に結合できることを示している。特定の実施形態では、オンチップシステム1222に入力デバイス1230および電源1244が結合されている。さらに、特定の実施形態では、図12に例解されたとおり、ディスプレイ1228、入力デバイス1230、スピーカー1236、マイクロフォン1238、ワイヤレスアンテナ1242および電源1244はオンチップシステム1222の外にある。ただし、各々はオンチップシステム1222のコンポーネントに結合されている。] 図12
[0068] データ転送および/またはTLB探索省略論理回路1264、1つあるいはそれより多くの実行装置1268ならびにローカルメモリ1270は、デジタル信号プロセッサ1210の別個のコンポーネントとして示されているが、データ転送および/またはTLB探索省略論理回路1264、1つあるいはそれより多くの実行装置1268ならびにローカルメモリ1270を、ワイヤレスコントローラ1240、CODEC1234、ディスプレイコントローラ1226、他の処理コンポーネント(図示していない汎用プロセッサなど)またはこれらの任意の組合せといった他の処理コンポーネントに組み込むことができることを理解すべきである。]
[0069] 当業者はさらに、本明細書で開示した実施形態との関係で説明した様々な例解的な論理ブロック、構成、モジュール、回路およびアルゴリズムのステップが、電子ハードウェア、コンピュータソフトウェアまたは両方の組合せとして実施できることを理解しよう。ハードウェアおよびソフトウェアのこの互換性を明示するため、様々な例解的なコンポーネント、ブロック、構成、モジュール、回路およびステップについて、これらの機能面から全般的に上述してきた。こうした機能がハードウェアまたはソフトウェアとして実施されるか否かは、特定のアプリケーションおよびシステム全体に課せられる設計上の制約に左右される。当業者は、各々の特定のアプリケーションに関し様々な方法で前述の機能を実施することができるが、かかる実施の決定を、本開示の範囲から逸脱するものと解釈すべきではない。]
[0070] 本明細書で開示する実施形態との関係で説明する方法またはアルゴリズムのステップは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、またはこの2つの組合せで直接体現することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、PROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取り外し可能ディスク、CD−ROMまたは当技術分野で知られているその他の形式の記憶媒体に存在し得る。例解的な記憶媒体はプロセッサに結合され、それによりプロセッサは記憶媒体から情報を読み取ること、および記憶媒体に情報を書き込むことができる。代替法として、記憶媒体はプロセッサと一体化することもできる。プロセッサおよび記憶媒体はASIC中に存在し得る。ASICはコンピューティングデバイスまたはユーザ端末中に存在し得る。代替法として、プロセッサおよび記憶媒体はコンピューティングデバイスまたはユーザ端末中に個別のコンポーネントとして存在することもできる。]
[0071] 開示された実施形態に関するこれまでの説明は、開示された実施形態を当業者が実施または利用できるようにするため提供されている。これらの実施形態の様々な修正形態が当業者には容易に理解されると思われ、本明細書に定める一般的原理を、本開示の趣旨または範囲から逸脱することなく他の実施形態に適用することができる。よって、本開示は、本明細書に示す実施形態に限定されることを意図しておらず、この原理および以下の請求項が定める新規な特徴と合致する最大の範囲を認めるものである。]
权利要求:

請求項1
複数の実行装置を有するインターリーブ型マルチスレッド(IMT)プロセッサ内の実行パイプラインにおいて、実行装置でのライトバック段階の間、第1命令の実行によりレジスタファイルに書き込まれる結果に関連づけられた書き込み識別子を、第2命令に関連づけられた読み取り識別子と比較することと、前記書き込み識別子が前記読み取り識別子と合致したとき、後続の読み取り段階での前記実行装置による使用に備えて、前記結果を前記実行装置のローカルメモリに保存することとを具備する方法。
請求項2
前記方法は、前記書き込み識別子が前記読み取り識別子と合致しなかったとき、前記結果を前記ローカルメモリに保存することなく、前記結果を前記レジスタファイルに書き込むことをさらに具備する請求項1記載の方法。
請求項3
前記ローカルメモリに保存された前記結果を使用して、前記実行装置で命令パケットを実行することをさらに具備する請求項1記載の方法。
請求項4
前記書き込み識別子に含まれる1つあるいはそれより多くのゼロ値ビットを特定することと、前記1つあるいはそれより多くのゼロ値ビットに関連づけられた前記実行装置内のデータパスへのパワーを減らすための標識を生成することとをさらに具備する請求項1記載の方法。
請求項5
前記書き込み識別子が前記読み取り識別子と合致したとき、データ転送可能アウトプット標識を生成することと、前記データ転送可能アウトプット標識に応じてレジスタファイルのスロットを選択的に無効にすることとをさらに具備する請求項1記載の方法。
請求項6
前記データ転送可能アウトプット標識に関係する選択信号を生成することと、前記レジスタファイルからのアウトプットまたは前記ローカルメモリからの前記結果のうちの1つを、前記第2命令を実行する際の使用に備えて前記実行装置に選択的に提供することとをさらに具備する請求項5記載の方法。
請求項7
前記第1命令の第1記憶アドレスから計算された前記第2命令の第2記憶アドレスのキャリービットを、前記第2記憶アドレスおよび前記第1記憶アドレスが1つのキャッシュラインに関連しているか否かを決定するために調べることと、前記第2記憶アドレスに関連づけられた第2キャッシュラインアドレスが、前記第1記憶アドレスに関連づけられた第1キャッシュラインアドレスと合致したとき、タグ配列探索オペレーションを実行することなく多方向キャッシュからデータを取り出すこととをさらに具備する請求項1記載の方法。
請求項8
第1命令パケットに関連づけられた第1アドレスから、第2命令パケットに関連づけられた第2アドレスを決定することと、データ装置の加算器のキャリービットを、多方向キャッシュに関連づけられたキャッシュラインの境界を前記第2アドレスが越えたか否かを決定するために調べることと、前記境界を越えていないとき、先行のタグ配列探索オペレーションにより決定された前記第1アドレスに関連づけられたタグ配列データおよび変換索引バッファ(TLB)探索データを使用して前記第2アドレスからデータを取り出すために前記多方向キャッシュにアクセスすることとを具備する方法。
請求項9
キャッシュライン境界を越えた場合、前記方法は、変換索引バッファ(TLB)探索オペレーションを実行することなく前記第2命令に関連づけられたタグ配列情報を決定するためにタグ配列探索オペレーションを実行することをさらに具備する請求項8記載の方法。
請求項10
前記タグ配列情報を使用して前記多方向キャッシュからデータを読み取ることをさらに具備する請求項9記載の方法。
請求項11
前記第1アドレスが第1メモリ読み取りアドレスを具備し、前記第2アドレスが第2メモリ読み取りアドレスを具備する請求項8記載の方法。
請求項12
前記第2アドレスを、前記第1命令パケットの実行により決定された結果に関連づけられた第1書き込みアドレスと比較することと、前記第1書き込みアドレスが前記第2アドレスと合致したとき、前記第2命令パケットを実行する際の使用に備えて前記結果を実行装置内のローカルメモリに保存することとをさらに具備する請求項8記載の方法。
請求項13
前記ローカルメモリから前記結果を取り出すことと、前記取り出された結果を使用して前記第2命令パケットを実行することとをさらに具備する請求項12記載の方法。
請求項14
ページ境界を越えたとき、前記方法は、前記多方向キャッシュに関連づけられた物理アドレスに前記第2アドレスを変換するために、変換索引バッファ(TLB)探索オペレーションを実行することと、タグ情報を決定するために、タグ配列探索オペレーションを実行することと、前記タグ情報および前記物理アドレスに基づきメモリにアクセスすることとをさらに具備する請求項8記載の方法。
請求項15
相対アドレス指定を使用して前記第1アドレスから前記第2アドレスを決定する請求項8記載の方法。
請求項16
1つあるいはそれより多くのデータ値を保存するローカルメモリと、読み取りオペレーションに関連づけられた読み取りアドレスが先行のライトバックオペレーションに関連づけられたライトバックアドレスと合致するか否かを決定するように適合された論理回路であって、前記読み取りアドレスが前記ライトバックアドレスと合致したとき、前記ローカルメモリに前記1つあるいはそれより多くのデータ値を保存するように適合された論理回路とを備える実行装置を具備するマルチスレッドプロセッサ。
請求項17
前記論理回路が、前記実行装置の外にあるメモリの記憶場所からデータを読み取るように適合されており、前記読み取りアドレスが前記ライトバックアドレスと合致しなかったとき、前記記憶場所が前記読み取りアドレスに対応する請求項16記載のマルチスレッドプロセッサ。
請求項18
前記実行装置がライトバック段階、デコード段階およびレジスタファイル読み取り段階を含む複数の実行段階を具備する請求項16記載のマルチスレッドプロセッサ。
請求項19
前記論理回路が1つあるいはそれより多くの比較器を備え、前記1つあるいはそれより多くの比較器が、読み取りアドレス情報を書き込みアドレス情報と比較し、結果を作成してデータ転送を選択的に可能にするように適合されている請求項18記載のマルチスレッドプロセッサ。
請求項20
前記ローカルメモリが前記実行装置内に1つあるいはそれより多くのデータラッチを具備する請求項16記載のマルチスレッドプロセッサ。
請求項21
データ転送を選択的に可能にするために、データ転送論理回路によって前記1つあるいはそれより多くのデータラッチが選択的にアクティブ化される請求項20記載のマルチスレッドプロセッサ。
請求項22
命令に関連づけられた読み取りアドレスの少なくとも一部が先行命令に関連づけられた読み取りアドレスの一部と合致するとき、タグ配列探索オペレーションを実行することなく、多方向キャッシュメモリ内の記憶アドレスを決定するように適合された第2論理回路をさらに具備する請求項16記載のマルチスレッドプロセッサ。
請求項23
複数の実行装置を有するインターリーブ型マルチスレッド(IMT)プロセッサ内の実行パイプラインにおいて、第1命令パケットの実行によりレジスタファイルに書き込まれる結果に関連づけられた書き込み識別子を、第2命令パケットに関連づけられた読み取り識別子と比較するための手段と、前記書き込み識別子が前記読み取り識別子と合致したとき、前記第2命令パケットを実行する際の使用に備えて、前記結果を実行装置に選択的にローカル保存するための手段とを具備するプロセッサ。
請求項24
前記第1命令パケットに関連づけられた第1アドレスから前記第2命令パケットに関連づけられた第2アドレスを決定するための手段と、多方向キャッシュに関連づけられたキャッシュラインのキャッシュライン境界を前記第2アドレスが越えたか否かの決定をすることを決定するために、データ装置の加算器のキャリービットを調べるための手段と、変換索引バッファ(TLB)またはタグ配列にアクセスすることなく前記第1アドレスに関連づけられたローカル保存済み物理アドレスデータおよび方向データを使用して、仮想アドレスを前記多方向キャッシュに関連づけられた物理アドレスに変換するための手段とをさらに具備する請求項23記載のプロセッサ。
請求項25
第1命令パケットの実行によりレジスタファイルに書き込まれる結果に関連づけられた書き込み識別子を、第2命令パケットに関連づけられた読み取り識別子と比較するための手段が、前記書き込み識別子および前記読み取り識別子を受信し、前記書き込み識別子と前記読み取り識別子とが合致するか否かを示す第1アウトプットを提供するように適合された第1比較器と、前記書き込み識別子および第2読み取り識別子を受信し、前記書き込み識別子と前記第2読み取り識別子とが合致するか否かを示す第2アウトプットを提供するように適合された第2比較器と、前記第1アウトプットおよび前記第2アウトプットに基づき前記第2命令パケットを実行する際の使用に備えて、ローカル保存済みデータまたはレジスタデータのうちの1つを前記実行装置に選択的に提供するように適合された論理回路とを具備する請求項23記載のプロセッサ。
类似技术:
公开号 | 公开日 | 专利标题
US20170147353A1|2017-05-25|Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US10216693B2|2019-02-26|Computer with hybrid Von-Neumann/dataflow execution architecture
US9965274B2|2018-05-08|Computer processor employing bypass network using result tags for routing result operands
US9262164B2|2016-02-16|Processor-cache system and method
JP5889986B2|2016-03-22|実行された命令の結果を選択的にコミットするためのシステムおよび方法
US9824016B2|2017-11-21|Device and processing method
JP2017138993A|2017-08-10|マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム
JP4829541B2|2011-12-07|マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
US6925643B2|2005-08-02|Method and apparatus for thread-based memory access in a multithreaded processor
US8639884B2|2014-01-28|Systems and methods for configuring load/store execution units
US7647518B2|2010-01-12|Replay reduction for power saving
US7257679B2|2007-08-14|Sharing monitored cache lines across multiple cores
US9513905B2|2016-12-06|Vector instructions to enable efficient synchronization and parallel reduction operations
US6279100B1|2001-08-21|Local stall control method and structure in a microprocessor
JP2014059902A|2014-04-03|Simdベクトルの同期
US8555039B2|2013-10-08|System and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor
JP3810407B2|2006-08-16|推測式プロセッサにおいて信頼性のないデータを含む命令の実行を削減するシステム及び方法
US6065106A|2000-05-16|Resuming normal execution by restoring without refetching instructions in multi-word instruction register interrupted by debug instructions loading and processing
US6718457B2|2004-04-06|Multiple-thread processor for threaded software applications
DE4206062C2|1996-06-13|Pipelineverarbeitung von Instruktionen
US7861066B2|2010-12-28|Mechanism for predicting and suppressing instruction replay in a processor
US9311085B2|2016-04-12|Compiler assisted low power and high performance load handling based on load types
JP5372929B2|2013-12-18|Multi-core processor with hierarchical microcode store
US9250901B2|2016-02-02|Execution context swap between heterogeneous functional hardware units
EP0380846B1|1998-09-09|Apparatus for resolving a variable number of potential memory access conflicts in a pipeline computer system and method therefor
同族专利:
公开号 | 公开日
US20090216993A1|2009-08-27|
WO2009108462A1|2009-09-03|
EP2263149A1|2010-12-22|
JP2013239183A|2013-11-28|
JP5661863B2|2015-01-28|
CN103365627A|2013-10-23|
KR101183651B1|2012-09-17|
KR20100126442A|2010-12-01|
CN102089742A|2011-06-08|
TW200943176A|2009-10-16|
US8145874B2|2012-03-27|
CN103365627B|2016-08-10|
KR101221512B1|2013-01-15|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2013-01-10| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130109 |
2013-01-16| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130115 |
2013-04-16| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130415 |
2013-04-23| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130422 |
2013-05-16| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130515 |
2013-05-23| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130522 |
2013-06-15| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130614 |
2013-09-11| A02| Decision of refusal|Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130910 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]